package cn.cangfei.massage.service;

import cn.cangfei.massage.dto.param.MassageProductParam;
import cn.cangfei.massage.dto.update.MassageProductDto;
import cn.cangfei.massage.dto.update.MassageProductFinalDto;
import cn.cangfei.massage.entity.MassageProduct;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

public interface IMassageProductService extends IService<MassageProduct> {
    /**
     * 判断是否存在名称
     *
     * @param name
     * @return
     */
    boolean count(String name);

    /**
     * 判断是否存在这个产品
     *
     * @param id
     * @return
     */
    boolean count(Long id);


    /**
     * 新增产品
     *
     * @param param
     * @return
     */
    boolean insertProduct(MassageProductParam param);

    /**
     * 修改产品信息
     *
     * @param id
     * @param param
     * @return
     */
    boolean update(Long id, MassageProductParam param);

    /**
     * 删除产品
     *
     * @param id
     * @return
     */
    boolean delete(Long id);

    /**
     * 获取产品信息
     *
     * @param id
     * @return
     */
    MassageProduct getProduct(Long id);

    /**
     * 获取产品列表（分页查询）
     *
     * @param name
     * @param up
     * @param categoryName
     * @param categoryId
     * @param pageNum
     * @param pageSize
     * @return
     */
//    IPage<MassageProduct> list(String name, String up, String categoryName, Long categoryId, Integer pageNum, Integer pageSize);
    IPage<MassageProductFinalDto> list(String name, String up, String categoryName, Long categoryId, Integer pageNum, Integer pageSize);


    /**
     * 定时任务扫描看产品过期时间
     */
    public void productExpiration();


    /**
     * 获取产品列表（分页查询）小程序端判断下架
     *
     * @param name
     * @param categoryName
     * @param categoryId
     * @param pageNum
     * @param pageSize
     * @return
     */
    IPage<MassageProduct> listForApp(String name, String categoryName, Long categoryId, Integer pageNum, Integer pageSize);

    /**
     * 展示全部产品列表
     *
     * @param openId
     * @param categoryId
     * @param pageNum
     * @param pageSize
     * @return
     */
    IPage<MassageProductDto> listForAppList(String openId, Long categoryId, Integer pageNum, Integer pageSize);

    /**
     * 产品上下架
     *
     * @param id
     * @param status
     * @return
     */
    Boolean updateProductStatus(Long id, Integer status);
}
